from flask import abort
from flask import current_app, jsonify
from flask import render_template
from flask import session

from info.models import News, User
from info.utils.response_code import RET
from . import news_blue


# 新闻详情展示(用户)
# 请求路径: /news/<int:news_id>
# 请求方式: GET
# 请求参数:news_id
# 返回值: detail.html页面, 用户data字典数据
@news_blue.route('/<int:news_id>')
def news_detail(news_id):

    # 0. 获取session用户编号
    user_id = session.get("user_id")

    # 0.1. 根据用户编号获取对象
    user = None
    if user_id:
        user = User.query.get(user_id)

    # 1.根据新闻编号获取新闻对象
    try:
        news = News.query.get(news_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="获取新闻失败")

    # 2.判断是否存在
    if not news:
        abort(404)

    # 3.将新闻对象，转成字典数据
    data = {
        "news_info": news.to_dict(),
        "user_info": user.to_dict() if user else ""
    }

    # 4.携带数据，渲染页

    return render_template('news/detail.html', data = data)











